隨著公司業務年年增長,公司的人也越來越多,相對的管銷與薪資成本自然也逐年攀升,如果還座小型專案,恐怕無法應付公司的現金流量需求,所以公司也開始出現越來越多百萬等級的專案。不過,越大的專案越難結案,製作過程中遇到的困難與挑戰不小,需求變動的幅度也更大,所以公司內部自然也會不斷累積負面情緒,打擊公司士氣。但公司不接大案子將會無法應付公司管銷,這真的是一件非常糾結的事。
我們從 2008 年開始,因為公司轉向微軟開發技術一些時間,累積了一些經驗,再搭配自己經營部落格多年,有越來越多客戶主動找上我們,而大部分的客戶正好就是以微軟平台為主,所以不謀而合。在台灣,微軟的作業系統市佔率超過 9 成,這是一塊很大的餅,但以前玩 PHP 的時候,完全不覺得這有什麼,只覺得 Windows 能做到的,Linux 也能做到,光只想著要省錢與玩技術,都沒想到做生意要看整體,不能單只看一個地方。
在台灣雖然以中小企業為大宗,但也有不少中型與大型的企業,慢慢的也跟我們公司建立起連結,讓我們有機會為他們服務。我們公司多年以來大多以服務與技術為訴求,靠著口碑一個介紹一個客戶,並建立起品質信譽,所以才能逐年穩定成長。以前常有人問我「當公司有越來越多工程師的時候,你怎樣維持公司的程式碼品質」,靠的是什麼獨特的開發流程?還是什麼好用工具?爾或是其他因素?
我必須很老實的告訴各位,品質是用時間換出來的。記得有次有個客戶在晚上 12 點的時候找我聊天,問我怎麼管理公司的程式碼品質。我跟他說「我現在正在做 Code Review 檢查底下工程師寫的程式碼品質」,遇到不好的寫法,就發信叫工程師改。剛轉 ASP.NET 的前幾年,幾乎都是這樣渡過的,沒有什麼神奇的銀子彈,就是花心思下去看、下去改,如此而已。難道就沒有好用的工具或開發流程可以改善品質嗎?有,當然有,但沒有品質的意識,在好的工具在你手裡,你還是不會用。大多數工程師都只想趕快做完工作後下班,要讓大家願意為品質做出 110 分的努力是不切實際的,但這件事總要有人做,才能撐起一間公司的品牌,很自然的,這就淪為我閒暇之餘的工作了。
做什麼生意都一樣,品質永遠要擺在第一位。只要品質能維持在一定水平之上,公司就能穩定成長,沒什麼好擔心的,尤其是軟體這個行業更是如此。很多人經常抱怨「好廠商難找」,確實是如此,因為選擇軟體廠商的成本很高,轉換廠商的成本也很高,所以遇到「不會太差」的廠商,通常不會隨意更換,勉強點用,但這件事並不是所有老闆或公司高層都知道,所以隱含付出了許多無形成本。
也因為多年累積了口碑,客戶越來越大,需求也越來越複雜,相對網站與軟體的變動性也就變多。這一點,並不是所有工程師都能接受,脾氣好的人或許忍一忍就過去了,但情緒多少會有點累積。脾氣不好的人就會開始抱怨,抱怨客戶為什麼要提這種奇怪的需求,明明不合理,又要我們硬做,做了一段時間,又叫我們改回來,實在氣人啊;抱怨PM,抱怨客戶說什麼你都答應,你是豬嗎;抱怨公司,抱怨這間公司真是個血汗工廠,經常為了客戶的需求趕到晚上九點十點。
身為一個經營者,這是個很兩難的決定。若只願意接小案子,公司賺不到錢,薪水與獎金也發不多;若開始承接大專案,就要擔心每做完一個案子就有一批人要離職的事實,嚴重者可能是案子還沒做完人就跑光了。無論怎麼做,都不會有漂亮的答案出現,所以勢必要在這兩難中間找出一些平衡點才行,我也是跌跌撞撞了很久才慢慢找出這個複雜的平衡點。
我後來想想,專案開發的過程,遇到最多的問題並不在技術,而是在「溝通」。無論大案子、小案子,會遇到的溝通問題其實差不多,不就是需求變更、時程太短、遇到暴走族的客戶還有最常見的情緒問題,主要的問題大概就這些。與其這樣,你會傾向選擇承接大型專案還是小型專案呢?這個答案應該是明確的,當然是「大型專案」。但專案開發過程中的「副作用」就必須靠一些機制來「改善」。
沒錯,是「改善」,不是「解決」。因為有些事情是解決不了的,尤其是人的問題,你要等別人改變,倒不如自己先改,才能適應這個艱困的環境,適應不了,那也就只好黯然下台。當公司的定位確定後,我便開始研究各種改善「副作用」的方法,例如需求變更的問題,透過前期企劃人員來限縮專案的範疇,大幅降低需求異動的幅度。時程太短的問題,其實每個客戶都是這樣,你只要問客戶「你什麼時候要上線?」這幾乎只有一個標準答案「越快越好」,不是嗎!遇到暴走族的客戶,你還能怎麼辦?只能放下尊嚴讓他罵囉,我有次去客戶端開會,被臭罵 30 分鐘,回來還是開心的有說有笑,雖然我失去了 30 分鐘的尊嚴,但更不想失去未來 3 個小時可以開心的情緒,這是你可以控制的!但叔叔有練過,小朋友要再加油!XD
最後,也最難搞的,就是情緒管理問題。在一間公司裡,由於每個人因為生活背景不同,價值觀也不同,對每一件事情的見解也不盡相同,所以當專案遇到不合理或不合邏輯的情況時,身為IT人往往會強烈抗拒,有些人強力抗拒在心中、有些人強力在表現的事情上。這確實是個難解的難題,我最後則是盡量讓他們不要把工作的焦點放在「專案」上,而是「學習」上。因為專案開發是幫助一個人學習成長最快的方式,雖然副作用很多,但我唯一能做的,是幫助他們專注在自己想得到事情上面,而不是他們不想面對的那些副作用。當你能夠專注於正面的事情,心情上自然會舒緩很多,進一步壓下那些專案製作過程中的負面情緒,而這,就是「正面思考」的力量。
看樣子整個專案裡面最不穩定的因素,真的是"人"
先前是在做SharePoint的開發,後來發現SharePoint有一些功能被框住了
但老闆的需求是想突破這個框框。可能我技術也不純熟
這時候自已給自已的壓力跟未來的茫然真的副作用很大~~
不過當時候那種感覺,現在做一般的Web專案都會覺得比SharePoint專案好多了(笑)
謝謝保哥的分享:)
客製化 SharePoint 應該比客製化一般的 Web 專案比起來,應該痛苦十倍吧!
現在SharePoint開發已經變得很友善了 :)
......SharePoint Developer路過
心態雖然可以透過調整(心理),但身體狀態不一定跟得上心理ㄚ。
軟體(心理狀態)沒有極限,但硬體(身體狀態)的極限就真是極限啦,保重身體要緊!
doggy提到:
你只要問客戶「你什麼時候要上線?」這幾乎只有一個標準答案「越快越好」
我上次問客戶這個問題
他的答案是:昨天
doggy提到:
你只要問客戶「你什麼時候要上線?」這幾乎只有一個標準答案「越快越好」,不是嗎!
那就不要這樣問。改變一下:
先自己約略估個時間,然後問客戶: "我們30天(舉例)後讓貴司上線,如何?",也可以先抓寬一點的時間再來討價還價,但太寬又會被質疑技術太差,得好好斟酌一下。
幹業務或 PM 不能像一些沒水準的記者一樣亂問的..